(1) Field of the Invention
The present invention relates to a processor including a plurality of parallel executing units, and particularly, to a high-speed processing of conditional branch instructions thereof.
(2) Description of the Related Art
Recent efforts of computer researchers in increasing a processing speed culminated in the building of sophisticated processors that employ a plurality of executing units known as Superscalar or VLIW(Very Long Instruction Word). These processors enable parallel processing of several instructions which used to be processed in sequential. A well known commercialized example is a Motorola Inc.'s MC88100, details of which are in "MC88100 MICROPROCESSOR USER'S MANUAL SECOND EDITION", Motorola, Inc.
Another type of sophisticated processors that employ a high-speed processing method called the out-of-order execution also attracts public interest, in which executable instructions free of data-dependence are processed regardless of instruction order Further information is in "An Extended Superscalar Processor Prototype Based on the SIMP(Simple Instruction Stream/Multiple Instruction Pipelining) Architecture", Interdisciplinary Graduate School of Engineering Sciences, Kyushu University, Shingaku Giho, CPSY-90-6.54, July 1990.
However, parallel processing by these processors causes more frequent occurrence of conditional branch instructions per cycle than the sequential processing. Given that the processors will not determine whether to branch or not to branch until the conditions thereof have been decided or a PSR(Program Status Register) has been updated, they cause an interlock in each instruction flow due to so-called control-dependence, offsetting the advantages of parallel processing.
In order to overcome this, these sophisticated processors exploit a speculative execution: they predict whether they will determine to branch or not to branch before its condition is decided, for example, by following the result of the preceding conditional branch instruction, and execute the predicted instruction in advance.
However, when the prediction turns out wrong, it is necessary to return to the branch point and execute alternate instructions from the start, resulting in a great time loss. Given these circumstances, it can be said that these conventional processors do not necessarily increase the processing speed for a program.